package com.xuecheng.api.content;

import com.xuecheng.api.content.model.CourseBaseDTO;
import com.xuecheng.api.content.model.qo.QueryCourseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.api.media.dto.TeachplanlMediaDTO;
import com.xuecheng.api.media.vo.BindTeachplanMediaVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import io.swagger.annotations.*;

/**
 * - @author by 姜暄煊
 * - @Date 12.8
 * - @Description
 */
@Api(value = "课程基本信息Api接口",tags = "内容-课程基本业务信息Api信息接口")
public interface CourseBaseApi {

    /**
     * 分页查询方法
     * @param params 前端传会数据
     * @param model  课程信息
     * @return
     */
    @ApiOperation("分页查询课程基本信息")
    PageVO queryCourseList(PageRequestParams params , QueryCourseModel model);

    /**
     * 增加课程信息
     * @param courseBaseVO
     * @return
     */
    @ApiOperation(value = "保存课程基本信息")
    @ApiImplicitParam(name = "courseBaseVO",required = true
            ,value = "课程基本视图信息"
            ,dataType = "CourseBaseVO"
            ,paramType = "body")
    CourseBaseDTO createCourseBase(CourseBaseVO courseBaseVO);

    @ApiOperation("根据id查询课程信息")
    @ApiImplicitParam(name = "courseBaseId",required = true
                    ,value = "课程基本信息id"
                    ,dataType = "Long"
                    ,paramType = "body"
                    ,example = "1"
    )
    CourseBaseDTO getCourseBase(Long courseBaseId);

    @ApiOperation("更新课程基本信息")
    @ApiImplicitParam(name = "courseBaseVO",required = true
            ,value = "课程基本信息VO"
            ,dataType = "CourseBaseVO"
            ,paramType = "body")
    CourseBaseDTO modifyCourseBase(CourseBaseVO courseBaseVO);


    @ApiOperation("根据id删除课程信息")
    @ApiImplicitParam(name = "courseBaseId",required = true
            ,value = "课程基本信息id"
            ,dataType = "Long"
            ,paramType = "body"

    )
    void removeCourseBase(Long courseBaseId);

    @ApiOperation(value = "提交审核")
    @ApiImplicitParam(name = "courseBaseId", value = "课程ID", required = true, dataType = "Long", paramType = "query", example = "1")
    void commitCourseBase(Long courseBaseId);

    @ApiOperation(value = "课程预览")
    Object previewCourse(Long courseId,Long companyId);

    @ApiOperation(value = "课程发布")
    void publish(Long courseId);
}
